package com.stone.serverless.sdk.loader;

import java.util.List;
import java.util.Map;

/**
 * @Description: TODO
 * @Author: MECHREVO
 * @Date: 2022/1/21 19:15
 * @Version: 1.0.0
 */
public interface JarLoadService {
    /**
     * 获取所有的component加载器
     *
     * @return
     */
    List<ModuleClassLoader> getJarModuleClassLoaders();

    /**
     * 根据版本号获取
     *
     * @param componentName
     * @param version
     * @return
     */
    ModuleClassLoader getJarModuleClassLoader(String componentName, String version);

    /**
     * 卸载
     *
     * @param moduleName
     * @param version
     */
    void uninstall(String moduleName, String version);

    /**
     * 单个加载
     *
     * @param jarPath
     */
    void install(String jarPath);

    /**
     * 加载
     * @param jarFiles
     */
    void load(String[] jarFiles);


    /**
     * 获取模块信息
     * @return
     */
    List<Map<String, String>> componentInfo();

    /**
     * 统计模块路由信息
     * @param componentName
     * @param version
     * @return
     */
    List<String> routerStatistics(String componentName, String version);

    /**
     * 统计组件依赖的外部服务信息
     * @param componentName
     * @param version
     * @return
     */
    List<Map<String, String>> servicesStatistics(String componentName, String version);

}
